<?php
class Cliente extends Zend_Db_Table
{
    protected $_name = "cliente";
    
    public function lista(array $request)
    {
	$dados = array();
		
	$select = $this->select()
			->from($this, "COUNT(*) AS qtd")
			->where("eativo = ?", 1);
	$result = $this->fetchRow($select);
		
	if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
	}else{
            $total_pages = 0;
	}

	if($request['page'] == 1){
            $start = 0;
	}else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
	}

	$dados['total']	= $total_pages;
	$dados['page']	= $request['page'];
	$dados['records'] = $result->qtd;
		
	
        
        $select = "SELECT *, CASE tipoCliente";
	$select .= " WHEN 'B' THEN 'BANCO DE SANGUE'";
	$select .= " WHEN 'L' THEN 'LABORATÓRIO'";
	$select .= " END AS tipoCliente,";
        $select .= " e.nome as estado";
	$select .= " FROM cliente c";
        $select .= " INNER JOIN estados e ON (e.idEstado = c.idEstado)";
        $select .= " WHERE eAtivo = 1";
        
        if($request['sidx']){
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
	}else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
	}
        
        $resultado =  $this->_db->fetchAll($select);
        
        for($cont = 0; $cont < count($resultado); $cont++) {
            $dados['rows'][$cont]['id'] = $resultado[$cont]['idCliente'];
            $dados['rows'][$cont]['cell'] = array(
                                                $resultado[$cont]['nomeCompleto'],
						$resultado[$cont]['nomeCurto'],
						$resultado[$cont]['email'],
						$resultado[$cont]['cidade'],
						$resultado[$cont]['estado'],
                                                $resultado[$cont]['tipoCliente'],
						$resultado[$cont]['mensagem'],
						$resultado[$cont]['nomResponsavel'],
                                                $resultado[$cont]['crResponsavel'],
                                                $resultado[$cont]['maxSolicitacao'],
                                                $resultado[$cont]['maxRemessa']
                                                );
	}
	return $dados;
    }

    public function add($usuario, array $request)
    {
        $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND nomeCompleto = UPPER(?)', $request['nomeCompleto']);
        
        $resultNome = $this->fetchRow($select);
        
        $select = $this->select()
                       ->from($this)
                       ->where('email = LOWER(?)', $request['email']);
        
        $resultEmail = $this->fetchRow($select);
        
        if((!$resultNome)&&(!$resultEmail)){
            $dados = array(
                'nomeCompleto' => strtoupper($request['nomeCompleto']),
                'nomeCurto' => strtoupper($request['nomeCurto']),
                'cidade' => strtoupper($request['cidade']),
                'idEstado' => $request['estado'],
                'nomResponsavel' => strtoupper($request['nomResponsavel']),
                'crResponsavel' => strtoupper($request['crResponsavel']),
                'mensagem' => strtoupper($request['mensagem']),
                'email' => strtolower($request['email']),
                'maxSolicitacao' => 0,
                'maxRemessa' => 0,
                'tipoCliente' => $request['tipoCliente'],
                'eAtivo' => 1,
                'idUsuCad' => $usuario
            );
            $resultado = $this->insert($dados);
            if($resultado != 0)
                return 1;
            else
                return 0;
        }
        return 2;
    }
	
    public function edit($usuario, array $request)
    {
        $select = $this->select()
                       ->from($this)
                       ->where('eAtivo = 1 AND nomeCompleto = UPPER(?)', $request['nomeCompleto'])
                       ->where('idCliente <> ?', $request['id']);
                       
        $resultNome = $this->fetchRow($select);
        
        $select = $this->select()
                       ->from($this)
                       ->where('email = LOWER(?)', $request['email'])
                       ->where('idCliente <> ?', $request['id']);
                      
        $resultEmail = $this->fetchRow($select);
        
        if((!$resultNome)&&(!$resultEmail)){
            $dados = array(
                'nomeCompleto' => strtoupper($request['nomeCompleto']),
                'nomeCurto' => strtoupper($request['nomeCurto']),
                'cidade' => strtoupper($request['cidade']),
                'idEstado' => $request['estado'],
                'nomResponsavel' => strtoupper($request['nomResponsavel']),
                'crResponsavel' => strtoupper($request['crResponsavel']),
                'mensagem' => strtoupper($request['mensagem']),
                'email' => strtolower($request['email']),
                'tipoCliente' => $request['tipoCliente'],
                'idUsuAtu' => $usuario
            );
            $where = $this->getAdapter()->quoteInto("idCliente = ?", $request['id']);
            $resultado = $this->update($dados, $where);
            if($resultado != 0)
                return 1;
            else
                return 3;
        }
        return 2;
    }		
	
    public function del($usuario, array $request)
    {
        $dados = array(
            'eativo' => 0,
            'idUsuAtu' => $usuario
	);
	$where = $this->getAdapter()->quoteInto("idCliente = ?", $request['id']);
	$resultado = $this->update($dados, $where);
        if($resultado != 0)
            return 1;
        else
            return 0;
    }
    
    public function _getCliente($id)
       {
            $select = $this->select()
                                ->from($this)
                                ->where('idCliente = ?', $id);  
            
            $result= $this->fetchRow($select);
              
            
        return $result;
   }
    
    public function _getNomeCliente($id)
    {
            $select = $this->select()
                                ->from($this,'nomeCurto')
                                ->where('idCliente = ?', $id);  
            
            $result= $this->fetchRow($select);
              
            
        return $result;
   }
   
    public function _getClientes()
    {
        Try{
            $select = $this->select()
                                ->from('cliente',
                                        array('idCliente', 'nomeCurto'))
                                ->where('eAtivo = 1');
            return $this->fetchAll($select);
        }Catch(Zend_Exception $e){
            return NULL;
        }                        
    }
 
   public function _getListClientes()
   {
        $select = $this->_db->select()
                            ->from($this->_name);
                                       
        return $this->getAdapter()->fetchAll($select);
   }
   
   public function getClienteUsuario()
   {
       $dados = '';
        $select = $this->_db->select()
                            ->from('cliente', array('idCliente','nomeCurto'));
	$resultado =  $this->getAdapter()->fetchAll($select);
        $delimitador = ',';
               
        for ($cont = 0; $cont < count($resultado); $cont++)
        {
            $dados .= $resultado[$cont]['idCliente'] . ":" .  $resultado[$cont]['nomeCurto'] ;
            if($cont  < (count($resultado)-1))
            {
                $dados .= ';';
            }    
        }        
        return $dados;
   }
}
?>